#pragma once
#include <string>
#include <vector>

namespace utils {

    // 通用 contains：判断 vector 中是否存在某值（需要 ==）
    template<typename T>
    bool contains(const std::vector<T>& vec, const T& value) {
        for (const auto& item : vec) {
            if (item == value) return true;
        }
        return false;
    }

    // 通用 remove：移除 vector 中等于指定值的第一个元素（需要 ==）
    template<typename T>
    void remove(std::vector<T>& vec, const T& value) {
        for (size_t i = 0; i < vec.size(); ++i) {
            if (vec[i] == value) {
                for (size_t j = i; j < vec.size() - 1; ++j) {
                    vec[j] = vec[j + 1];
                }
                vec.pop_back();
                return;
            }
        }
    }

    // 通用 find：查找 vector 中等于指定值的元素（需要 ==）
    template<typename T>
    T* find(std::vector<T>& vec, const T& value) {
        for (size_t i = 0; i < vec.size(); ++i) {
            if (vec[i] == value) {
                return &vec[i];
            }
        }
        return nullptr;
    }

} // namespace utils